반응형 이미지
해상도 전환(resolution switching)
- 크기만 다른 동일한 이미지를 보여주고 싶을 때 사용하는 방법
- 화면에 어울리지 않게 일부러 큰 이미지를 사용하여 낭비를 하거나, 작은 사이즈의 이미지를 확대하는 것은 좋지 않다.
- 해상도 전환은 다양한 스크린, 다바이스에서 보유주기 위한 방법
- 해결방법: 1. 벡터 그래픽 이미지 사용, 2.
<img>요소에srcset와 sizes 속성 이용
srcset
srcset = "./img/screen1.png 360w",
"./img/screen2.png 600w"
/* 이미지 경로 + 공백 + 고육 픽셀 너비 작성 */
/* 같은 비율의 다양한 이미지 크기를 가지는 동일 이미지들이 최소 2개 이상 명시하는 속성 */
/* pw 단위가 아닌 w,x를 사용 */
w 서술자
- 이미지의 원본 넓이를 브라우저에게 알려줌
w서술자가 적용되면 이미지 크기는 뷰포트의 100%를 차지(width, sizes 등 속성으로 변경 가능)w서술자를 사용한 경우src속성을 무시(만약srcset속성이 사용 불가능한 브라우저일 경우 대비해서src를 작성)
x 서술자
- 화소의 밀도, 디바이스 화소 밀도에 따른 이미지를 로딩하도록 브라우저에게 알려줌
- 화소밀도(pixel density)
- 동일한 면적에 들어가는 화소의 수
- 화소의 갯수가 많을 수록 더 높은 해상동의 기기
- 서술자를 포함하지 않은 경우 기본값인
1x로 간주 w,x는 동시에 사용이 불가능하다.
같은 크기, 다른 해상도: srcset와 서술자 사용(크기와 해상도는 다르다.)
- 모두가 이미지를 실제 사이즈로 동일하게 봐야 할 때
x서술자를 이용하여 브라우저에 적절한 이미지를 선택
info
srcset은 브라우저에게 이미지 선택권을 위임하는 속성
srcset 속성은 원하는 이미지를 선택 및 강제할 수 없다.
브라우저 자체가 상황에 맞게 이미지를 선택해준다.
만약 해상도에 맞게 출력할 결과를 정하고 싶다면 CSS에서 @media를 이용하면 된다.
sizes
- 미디어 조건문이 true일 경우, 이미지가 차지하게 될 사이즈를 브라우저에게 알려준다.(
px,em,vw사용가능%는 사용 불가능) - 미디어 조건문이 없는 마지막 줄은 앞의 조건문 값이 false일 경우에 동작한다.
srcset이 비어있거나 너비 서술자를 사용하지 않으면 효과가 없다.size와width를 같이 작성할 경우width를 우선
danger
CSS 충돌 주의 size 속성을 사용할 때, CSS를 통한 이미지의 사이즈를 컨트롤 하는 방법과 충돌할 수 있다.
아트 디렉션(art direction)
- 연출방향, 중요한 부분을 자른 이미지를 보여주는 것
- 반응형 이미지에서 이미지의 의도가 제대로 전달되도록 기기에 따라 사진의 핵심을 확대하는 방법
- 다른 비율, 다양한 크기의 이미지를 사용할 때 사용
<picture> 요소 사용하기
<picture>
<source media="(min-width: 1024px)" srcset="/img/lication-chilli.png" />
<source media="(max-width: 1023px)" srcset="/img/lication-chilli2.png" />
<img src="lication-chilli.png" alt="위니브 리케이션 속 칠리" />
</picture>
/* Viewport 혹은 width의 설정에 따라 1024이상이면 chilli 1023이하라면 chilli2가
적용 */
<source>
-
브라우저가 고려하여 가장 적합한 요소를 선택. 일치하지 않거나 브라우저가
<picture>요소를 지원하지 않으면<img>요소를 선택 -
type<source>요소의 srcset 속성에 있는 URL에 대한 MIME 유형을 지정
-
media- 아트 디렉션에만 사용
- 미디어를 사용한다면
sizes속성 내에 제공해서는 안된다.
<img>
- src, alt 속성 포함
<source>요소 중 사용가능한 이미지가 없을 경우 해당 이미지로 적용
이미지 포맷 종류
- GIF(Graphics Interchange Format): 256색의 컬러만 표현 가능하기 때문에 선명하진 않지만 용량이 적다.
- 투명 표현, 애니메이션 처리 가능
- 투명 조절, 그림자 표현 불가능
- JPG/JPEG(Joint Photographic Expert Group image): 매우 화소가 높고, 용량도 적지만 투명처리가 불가능
- PNG(Portable Network Graphics): 컬러는 모두 표현 가능하며, 투명 영역을 처리 가능하지만 용량이 큼.
- SVG(Scalable Vector Graphics): 손실이나 품질 저하 없이 모든 크기에서 렌더링이 가능.
- WebP(Web Picture Format): JPEG보다 압축률이 더 좋고 뛰어난 색상을 지원.
- 투명도 표현 가능, 애니메이션 표현 가능.
- AVIF(AV1 Image File Format): 뛰어난 색상표현, 애니메이션 처리, 투명도 표현 가능 용량도 JPEG의 50% 수준. 현재 지원하지 않는 브라우저가 많다.
반응형 이미지 만드는 방법
width: 100%max-width: 100%